import router from '@/router'
import Store from '@/store' // Store===this.$store
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
/*
nprogress
1:安装  yarn add nprogress
2:导入  import Nprogress from 'nprogress'
      import 'nprogress/nprogress.css'
3:
   Nprogress.start()
   Nprogress.done()

*/

// 前置守卫
// 不需要登录的页面
// const whitePath = ['/login', '/404']
router.beforeEach(async(to, from, next) => {
  // console.log('beforeEach')
  NProgress.start()
  // console.log('to', to)
  /*
    有token
         如果要去的页面是login页
              回到首页
          其它页面呢
             如果有用户信息
                 正常进入
            如果没有用户信息
                  获取用户信息

    没有token
        如果进入的是不需要登录的页面
            正常进入
        如果去的页面是需要登录的
           跳转到登录页

    */

  if (Store.state.user.token) {
    if (to.path.toLowerCase() === '/login') {
      next('/')
    } else {
      if (Store.state.user.userInfo.userId) {
        next()
      } else {
        await Store.dispatch('user/getUserInfo')
        // 通过addRoutes添加的路由再经过一次导航守卫
        next(to.fullPath)
      }
    }
  } else {
    // if (whitePath.includes(to.path.toLowerCase())) {
    if (to.meta.noLogin) {
      next()
    } else {
      // 去登陆页时需要毛衣登录页登录完成后要回到哪个页面
      // fullPath:带参数的path地址
      next('/login?redirect=' + to.fullPath)
    }
  }
  NProgress.done()
})
// 后置守卫,并不是每个路由跳转都会经过后置守卫，因为它当前已处于某个路由时，你跳转它不会再次触发
router.afterEach(() => {
  // console.log('afterEach')
  NProgress.done()
})
// 解析时执行
router.beforeResolve((to, from, next) => {
  // console.log('beforeResolve')
  next()
})
